草庐IT

strings 包

全部标签

c++ - 创建兼容的 String 对象

所以我有一个提供字符串类型的现有库。它像这样隐式地转换成C风格的字符串:structTypeIDoNotOwn{TypeIDoNotOwn(){}TypeIDoNotOwn(TypeIDoNotOwnconst&){}TypeIDoNotOwn(charconst*){}TypeIDoNotOwn&operator=(TypeIDoNotOwnconst&){return*this;}TypeIDoNotOwn&operator=(charconst*){return*this;}operatorcharconst*()const{returnnullptr;}};它还有其他方法,但我

ElasticSearch Query_string + match_phrase 在千亿级检索中的思考

在舆情分析的应用场景中,数据规模通常在千亿以上。使用Elasticsearch去构建搜索引擎,做相关的分析,面临着非常多的挑战。先介绍一下,在舆情分析场景中,要用到的是matchphrase语法,针对文章做精准的句子匹配!在这篇文章中:1.我会先讲一下我们面临的挑战;2.接着我会带着问题,分析一下matchphrase语法的检索过程;3.偏向底层的原理。4.根据检索原理,考虑可以做哪些优化;5.以及针对我们面临的挑战,我的一些优化方法。目标探索ES在千亿规模数据的检索场景下,句子精准匹配的性能优化方案。在实时交互的场景中,应对这么多的检索,达到注重3秒内的目标。本文会先讲一下,在舆情分析场景下

c++ - std::string 实现是否符合 's.c_str() + s.size()' 不一定与 '&s[s.size()]' 相同?

§21.4.5[string.access]const_referenceoperator[](size_typepos)const;referenceoperator[](size_typepos);Returns:*(begin()+pos)ifpos.Otherwise,returnsareferencetoanobjectoftypecharTwithvaluecharT(),wheremodifyingtheobjectleadstoundefinedbehavior.至少对我来说,第二部分意味着这个“charT类型的对象”可能位于存储在std::string中的序列之外。目

c++ - 支持 std::ostream operator << 中的 const_string

我目前正在使用非常聪明的包boost::const_string直到http://libcxx.llvm.org/可以在Ubuntu或GCC上预先打包,使其成为__versa_string(在headerext/vstring.h中)它的默认字符串实现。libcxx的std::string以及__versa_string默认使用_small-string优化(SSO)。默认支持输出到std::ostream然而缺乏。代码#include#includeconst_stringx;std::cout除非我们强制x否则不起作用通过c_str()进入C字符串这变成了std::cout它按预期

c++ - 从 DLL 导出 STL std::basic_string 模板时,出现 LNK2005 错误

好的,所以我已经阅读了几个关于这个主题的问题和文章,我觉得我了解基础知识,但我仍然遇到问题。我有一个DLL,它导出一个以std::string作为成员的类。我的主程序包含也有字符串的类,并且它使用DLL。如果我在VS2010中编译DLL,我会收到以下警告:warningC4251:'MyClass::data':class'std::basic_string'needstohavedll-interfacetobeusedbyclientsofclass'MyClass'当我编译EXE时,我得到了相同的警告,但没有错误,程序编译并运行。事实上,这是一个大项目,所以我收到了40条警告,我

r data.table和string_elt()错误:如何修复“字符矢量” vs'char'错误?

从r3.3更新到r3.4后,我在使用时有一个错误data.table包裹:STRING_ELT()canonlybeappliedtoa'charactervector',nota'char'有人经历过吗?我正在考虑降级以“修复”此操作。这是我的会话信息:>sessionInfo()Rversion3.4.0(2017-04-21)Platform:x86_64-pc-linux-gnu(64-bit)Runningunder:Ubuntu16.04.2LTSMatrixproducts:defaultBLAS:/usr/lib/libblas/libblas.so.3.6.0LAPACK:/

c++ - 使用 std::string 迭代器查找它的字符串的开始和结束

仅给定一个std::string迭代器,是否可以确定字符串的起点和终点?假设我无权访问字符串对象,因此无法调用string.begin()和string.end(),我所能做的就是递增或递减迭代器并测试值。谢谢,菲尔 最佳答案 简短的回答是否定的。长话短说,因为迭代器不应该知道正在迭代的容器或范围,所以他们只需要知道能够跳转到下一个元素(inc或dec到next或prev)取消对它们自己的引用,以揭示对它们所指向的值的引用当然,还要将自己与其他迭代器进行比较,最重要的是与某种“结束”迭代器进行比较。此外,某些类型的迭代器可能做的不仅

c# - 如何将 std::string& SWIG 转换为 C# 引用字符串

我正在尝试将带有std::string引用的C++函数转换为C#。我的API如下所示:voidGetStringDemo(std::string&str);理想情况下,我希望从C#中看到类似的东西voidGetStringDemoWrap(refstring);我知道我需要为此创建一个类型映射,并且我通过使用std_string.i文件尝试了一些东西,但我认为我没有任何进展。有没有人有任何例子。我是Swig和C#的新手,所以我无法提出任何真正的想法。 最佳答案 以防万一有人在将来寻找这个,我为C#创建了这样的std_string.i

c++ - 从 std::istreambuf_iterator 创建 std::string,奇怪的语法怪癖

我在某处发现了以下用于将文件读入字符串的习语:std::ifstreamfile("path/to/some/file.ext");std::stringcontents(std::istreambuf_iterator(file),(std::istreambuf_iterator()));它现在工作得很好。但是,如果我删除第二个迭代器参数周围的括号,即:std::stringcontents(std::istreambuf_iterator(file),std::istreambuf_iterator());一旦我尝试在字符串对象上调用任何方法,例如:constchar*buffe

c++ - 为什么 std::to_string 没有短重载?为什么没有 noexcept?

有人知道为什么C++11标准第21.5节中声明的各种to_string函数缺少short和unsignedshort的重载吗?为什么不声明这些函数noexcept呢?这是完整的重载集:stringto_string(intval);stringto_string(unsignedval);stringto_string(longval);stringto_string(unsignedlongval);stringto_string(longlongval);stringto_string(unsignedlonglongval);stringto_string(floatval);s